<?php
    // +----------------------------------------------------------------------
    // | ThinkPHP [ WE CAN DO IT JUST THINK ]
    // +----------------------------------------------------------------------
    // | Copyright (c) 2006~2017 http://thinkphp.cn All rights reserved.
    // +----------------------------------------------------------------------
    // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
    // +----------------------------------------------------------------------
    // | Author: 麦当苗儿 <zuojiazi@vip.qq.com> <http://zjzit.cn>
    // +----------------------------------------------------------------------
    namespace think\exception;

    use think\Exception;

    /**
     * ThinkPHP错误异常
     * 主要用于封装 set_error_handler 和 register_shutdown_function 得到的错误
     * 除开从 think\Exception 继承的功能
     * 其他和PHP系统\ErrorException功能基本一样
     */
    class ErrorException extends Exception {
        /**
         * 用于保存错误级别
         * @var integer
         */
        protected $severity;

        /**
         * 错误异常构造函数
         * @param integer $severity 错误级别
         * @param string  $message  错误详细信息
         * @param string  $file     出错文件路径
         * @param integer $line     出错行号
         * @param array   $context  错误上下文，会包含错误触发处作用域内所有变量的数组
         */
        public function __construct($severity, $message, $file, $line, array $context = []) {
            $this->severity = $severity;
            $this->message  = $message;
            $this->file     = $file;
            $this->line     = $line;
            $this->code     = 0;
            empty($context) || $this->setData('Error Context', $context);
        }

        /**
         * 获取错误级别
         * @return integer 错误级别
         */
        final public function getSeverity() {
            return $this->severity;
        }
    }
